Short Messaging Service (SMS) is a service that allows short text/data messages to be sent and received on Global System for Mobile Communications (GSM) cellular networks. Generally, there are three types of SMS messages: GSM character set-encoded messages (effectively 7-bit encoded text), UCS2-encoded messages (Unicode encoded 16-bit text), and 8-bit binary-encoded messages. Typically, GSM-encoded messages and UCS2-encoded messages are textual and are displayed to the user by a messaging application as soon as they are received, whereas 8-bit binary-encoded messages are generally directed at providing device-specific information, such as device configuration messages.
SMS messages have a “User Data Header” which can contain additional information, such as source and destination port numbers (similar to TCP/IP), concatenation information (to support multi-part SMS messages), and the like. The User Data Header allows SMS messages to be customized.
Special characters or strings are often used in SMS messages to denote messages with special meanings. For example, a text message containing the string “!VM!5” might indicate that five voicemail messages are available. However, “!VM!5” would probably not be displayed directly to the user; instead, the message would cause the device's software to update its voicemail icon instead. Similarly, it is often possible to have e-mail redirected to a GSM mobile device through the use of a special e-mail address maintained by the GSM cellular service supplier. When the carrier receives an e-mail directed to this special address it generates an SMS message containing the same data as the e-mail message and sends the SMS message on to the user's mobile device via the cellular network. Such SMS messages often have a special layout that includes information about the original e-mail's sender and subject as well as the body of the original e-mail message. Ideally, the receiving device parses this special SMS message format and displays the information to the user in a convenient manner.
Supporting such rich messaging functionality requires that the device understand all of the different message types it might receive. However, there are many different formats already in use and there are many new formats being introduced regularly.